Application monitoring system directed to the monitoring of transaction execution performance, transaction functionality and resource utilization of application processes typically use in-process agents to gain visibility into process internal data. In-process agents consist in executable code that is injected into the execution context of a monitored process or thread, and is executed together with the original executable code of the process.
As the code of in-process agent runs as part of the monitored process, it has access to process internal transaction execution and resource execution data that is not available from outside the process. The in-process agent typically gathers this data and sends it to an external monitoring server for correlation, analysis, storage and visualization.
The process internal monitoring of application activities provides monitoring data of much higher quality and granularity than external monitoring, e.g. via standard monitoring interfaces either provided by the processes themselves or by the operating system executing them. As a consequence, the usage of in-process agents has gained popularity and monitoring system vendors try to roll out the in-process agent monitoring concept to a wide range of different process types.
However, the injection of an in-process agent requires manual adaptation of the start conditions of processes that should be monitored by an in-process agent. These adaptations may include the manipulation of a command line starting the process, or the setting or changing environment variables or the setting or changing of operating system configuration or registry entries. Different types of processes required different, process specific manipulation of process start conditions to inject an appropriate type of in-process agent into the process. As an example, processes running a Java® virtual machine may require specific manipulations to the command line starting the process to inject a Java specific in-process agent, whereas processes based on the Microsoft .NET® common language runtime may require a specific environment condition specified by the setting of an operating system registry entry to inject a .NET® CLR specific in-process agent. Other types of processes, like processes running Python or PHP script interpreters or processes running a web server may require other modifications of the process start conditions to inject an appropriate in-process agent. Those modifications may e.g. include the manipulation of process initialization configurations data, like data stored in “.ini” files that are read and interpreted by specific processes during startup.
Manual modification of those process start condition on the one hand requires detailed knowledge about the different process type specific mechanisms to inject in process agents and is a highly responsible and also risky task, as incorrectly configured injection conditions may cause a process to either crash either on startup or later or to work incorrectly, on the other hand it also is a monotonous and repetitive task in case of e.g. server farms consisting in large sets of identically configured host computer systems running identically or nearly identically configured processes that all need to be modified manually to inject an in-process agent.
Consequently, a solution is required that reduces the required manual intervention of the start condition of a process to inject an appropriate in-process agent to a minimum.
This section provides background information related to the present disclosure which is not necessarily prior art.